﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; 
using Infragistics.Win;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Business;
using Bostik.Common.Infos;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using Business;
using Bostik.Common.Infos;
using System.IO;
using System.Diagnostics;

namespace Bostik
{
    public partial class Frm_Consulta_Clientes_Factura : Form
    {
        private OpenFileDialog BuscarImagen = new OpenFileDialog();
        public Hashtable hashtable = new Hashtable();
        public int IndexRo = -1;
            
        public Frm_Consulta_Clientes_Factura()
        {
            InitializeComponent();
        }

        private void LlenadoCombo()
        {

            AccesoBusiness negocio = new AccesoBusiness();

            DataTable resultado = negocio.LlenadoCombos("cmbClientesProc");

            cmbCliente.DisplayMember = "NomCliente";
            cmbCliente.ValueMember = "IdCliente";
            cmbCliente.DataSource = resultado;


        }         

        private void Frm_Consulta_Clientes_Load(object sender, EventArgs e)
        {
            LlenadoCombo();
            dtFechaFactura.Format = DateTimePickerFormat.Custom;
            dtFechaFactura.CustomFormat = "dd/MM/yyyy";
           
        }

        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog BuscarImagen = new OpenFileDialog();
            BuscarImagen.Filter = "Archivos de Imagen|*.jpg";
            //Aquí incluiremos los filtros que queramos.

            BuscarImagen.FileName = "";

            BuscarImagen.Title = "Agregar Documento, Foto, Factura";

            BuscarImagen.InitialDirectory = "C:\\";
            //BuscarImagen.FileName = this.textBox1.Text;

            if (BuscarImagen.ShowDialog() == DialogResult.OK)
            {

                /// Si esto se cumple, capturamos la propiedad File Name y la guardamos en el control
                this.txtNomCliente.Text = BuscarImagen.FileName;
                String Direccion = BuscarImagen.FileName;
                this.pictureBox1.ImageLocation = Direccion;

                //Pueden usar tambien esta forma para cargar la Imagen solo activenla y comenten la linea donde se cargaba anteriormente 

                //this.pictureBox1.ImageLocation = textBox1.Text;

                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            }
        }
         
       

      

        private void button3_Click(object sender, EventArgs e)
        {

        }

        private void dtFechasVence_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void button3_Click_1(object sender, EventArgs e)
        {
            

            Busqueda();
        }

        private void Busqueda()
        {
            AccesoBusiness negocio = new AccesoBusiness();
            if (cmbCliente.SelectedValue == null)
                return;

            int IdCliente = 0;
            if (cmbCliente.Enabled)
            {
                if (!string.IsNullOrEmpty(cmbCliente.SelectedValue.ToString()))
                    IdCliente = Convert.ToInt32(cmbCliente.SelectedValue);
            } 

            DataSet resultado = negocio.BuscaCliente(IdCliente);

            if (resultado.Tables[0].Rows.Count > 0)
            {

                txtIdCliente.Text = resultado.Tables[0].Rows[0]["IdCliente"].ToString();
                txtNomCliente.Text = resultado.Tables[0].Rows[0]["NomCliente"].ToString();
              //  txtRFC.Text = resultado.Tables[0].Rows[0]["Rfc"].ToString();
                txtDireccion.Text = resultado.Tables[0].Rows[0]["Direccion"].ToString();
                txtTelefonos.Text = resultado.Tables[0].Rows[0]["Telefonos"].ToString();
                txtCorreo.Text = resultado.Tables[0].Rows[0]["Correo"].ToString();
             

                if (resultado.Tables[0].Rows[0]["EsPersonaFisica"].ToString() == "1")
                    rbPersonaFisica.Checked = true;
                else
                    rbPersonaMoral.Checked = true;

                if (resultado.Tables[1].Rows.Count > 0)
                {
                    this.dtFacturas.DataSource = resultado.Tables[1];

                }

                if (resultado.Tables[2].Rows.Count > 0)
                {
                    this.dtFechasVence.DataSource = resultado.Tables[2];

                }


            }
            else
            {
                MessageBox.Show("No existen datos para su busqueda", "Bostik", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void rbPersonaFisica_CheckedChanged(object sender, System.EventArgs e)
        {
            if (rbPersonaMoral.Checked)
            {
                rbPersonaMoral.Checked = false;
                rbPersonaFisica.Checked = true;
            }

        }

        private void rbPersonaMoral_CheckedChanged(object sender, System.EventArgs e)
        {
            if (rbPersonaFisica.Checked)
            {
                rbPersonaFisica.Checked = false;
                rbPersonaMoral.Checked = true;
            }
        }

        private void btnGuardaFactura_Click(object sender, System.EventArgs e)
        {
            //guardaimagen
            //BuscarImagen.FileName;
            InfoRequisitoClientes InfoArchivo = new InfoRequisitoClientes();

            if (string.IsNullOrEmpty(txtIdCliente.Text))
                return;

            if (string.IsNullOrEmpty(BuscarImagen.FileName))
                return;

            InfoArchivo.IdCliente = Convert.ToInt32(txtIdCliente.Text);
            InfoArchivo.Archivo = StreamFile(BuscarImagen.FileName);
            InfoArchivo.NomDocumento = BuscarImagen.SafeFileName;
            InfoArchivo.DescripcionDoc = this.txtDescripcionDoc.Text;

            if (chcEsFactura.Checked)
            {
                InfoArchivo.Fechafactura = dtFechaFactura.Value;
                InfoArchivo.Pagado = Convert.ToInt32(chkPagado.Checked);
                InfoArchivo.Formapago = txtFormaPago.Text;
                InfoArchivo.Esfactura = 1;
            }
            else
            {
                InfoArchivo.Esfactura = -1;
            }


            if (IndexRo > 0 && string.IsNullOrEmpty(dtFacturas.Rows[IndexRo].Cells["NombreArchivo"].Value.ToString()))
                InfoArchivo.IdArchivo = Convert.ToInt32(this.dtFacturas.Rows[IndexRo].Cells["IdArchivo"].Value.ToString());
            else
                InfoArchivo.IdArchivo = -1;
            //byte[] bytes = System.IO.File.ReadAllBytes(BuscarImagen.FileName);

            // File.WriteAllBytes(InfoArchivo.NomDocumento, InfoArchivo.Archivo);

            AccesoBusiness negocio = new AccesoBusiness();

            DataSet resultado = negocio.GuardaArchivoRequisitos(InfoArchivo);

            Busqueda();
        }

        private void button2_Click_1(object sender, System.EventArgs e)
        {
            BuscarImagen.Filter = "Archivos de Imagen|*.*";
            //Aquí incluiremos los filtros que queramos.

            BuscarImagen.FileName = "";

            BuscarImagen.Title = "Agregar Documento, Foto, Factura";


            BuscarImagen.InitialDirectory = "C:\\";
            //BuscarImagen.FileName = this.textBox1.Text;

            if (BuscarImagen.ShowDialog() == DialogResult.OK)
            {

                /// Si esto se cumple, capturamos la propiedad File Name y la guardamos en el control

                String Direccion = BuscarImagen.FileName;
                this.pictureBox1.ImageLocation = Direccion;

                //Pueden usar tambien esta forma para cargar la Imagen solo activenla y comenten la linea donde se cargaba anteriormente 

                //this.pictureBox1.ImageLocation = textBox1.Text;

                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            }
        }

        private byte[] StreamFile(string filename)
        {
            FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);

            // Create a byte array of file stream length
            byte[] ImageData = new byte[fs.Length];

            //Read block of bytes from stream into the byte array
            fs.Read(ImageData, 0, System.Convert.ToInt32(fs.Length));

            //Close the File Stream
            fs.Close();
            return ImageData; //return the byte data
        }

        private void dtFacturas_CellDoubleClick(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
        {
            AccesoBusiness negocio = new AccesoBusiness();

            if (string.IsNullOrEmpty(txtIdCliente.Text))
                return;

            DataSet resultado = negocio.BuscaRequisitosArchivos(Convert.ToInt32(txtIdCliente.Text), Convert.ToInt32(dtFacturas.Rows[e.RowIndex].Cells["IdArchivo"].Value));

            string Nombre = Convert.ToString(dtFacturas.Rows[e.RowIndex].Cells["NombreArchivo"].Value);

            if(string.IsNullOrEmpty(Nombre))
                return;

            
            byte[] bytes = (byte[])resultado.Tables[0].Rows[0]["Archivo"];

            string Path = "C:\\Temporales\\" + txtIdCliente.Text + "\\";
            if (!Directory.Exists(Path))
            {
                Directory.CreateDirectory(Path);
            }
            if (!File.Exists(Path + Nombre))
            {
                File.WriteAllBytes(Path + Nombre, bytes);
            }

            Process.Start(Path + Nombre);
             
        }

        private void dtFacturas_Layout(object sender, System.Windows.Forms.LayoutEventArgs e)
        {
            if (dtFacturas.Columns["Archivo"] != null)
                dtFacturas.Columns["Archivo"].Visible = false;
        }

        private void dtFechasVence_CellDoubleClick(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
        {
            AccesoBusiness negocio = new AccesoBusiness();

            if (string.IsNullOrEmpty(txtIdCliente.Text))
                return;

            if (e.RowIndex < 0)
                return;

            DataSet resultado = negocio.BuscaContratoArchivos(Convert.ToInt32(this.dtFechasVence.Rows[e.RowIndex].Cells["IdPredio"].Value), Convert.ToInt32(dtFechasVence.Rows[e.RowIndex].Cells["IdArchivo"].Value));
             
            string Nombre = Convert.ToString(dtFechasVence.Rows[e.RowIndex].Cells["NombreArchivo"].Value);


            byte[] bytes = (byte[])resultado.Tables[0].Rows[0]["Archivo"];

            string Path = "C:\\TemporalesContratos\\" + txtIdCliente.Text + "\\";
            if (!Directory.Exists(Path))
            {
                Directory.CreateDirectory(Path);
            }
            if (!File.Exists(Path + Nombre))
            {
                File.WriteAllBytes(Path + Nombre, bytes);
            }

            Process.Start(Path + Nombre);
        }

        private void dtFacturas_CellClick(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
        {
            this.IndexRo = e.RowIndex;
        }

        private void btnBorrarArchivo_Click(object sender, System.EventArgs e)
        {

            if (IndexRo > 0 )
            {
                InfoRequisitoClientes Info = new InfoRequisitoClientes();
                Info.IdArchivo = Convert.ToInt32(this.dtFacturas.Rows[IndexRo].Cells["IdArchivo"].Value.ToString());
                Info.IdCliente = Convert.ToInt32(txtIdCliente.Text);

                AccesoBusiness negocio = new AccesoBusiness();

                DataSet resultado = negocio.EliminaArchivoClientes(Info);
                MessageBox.Show("Su archivo fue borrado", "Bostik", MessageBoxButtons.OK, MessageBoxIcon.Information);
                Busqueda();
            } 
        }

    }
}
